// pages/gequ/findSinger.js
const ac=wx.getBackgroundAudioManager() //创建InnerAudioContext对象用于播放音乐
let lastIndex //最后点击的索引号
let config={ offset:0, songCount:1 } //配置文件
let seek=false
Page({
  onHide(){
    wx.setStorageSync('word', this.data.word)
  },
  onUnload(){
    this.onHide()
  },
	onReachBottom(e){
		this.request(this.data.word)
	},
	search(e){ //执行搜索
		let word=e.detail.value //获取搜索的关键词
		config.offset=0
    this.setData({songs:[]}) //重新搜索，原有的数据要清空
		this.request(word) //执行查询
	},
	request(word){ //根据搜索的关键字word来获取歌曲列表信息病渲染到界面上
		if(!(word && config.offset<config.songCount))return
		wx.request({
			url: 'https://music.163.com/api/search/get/?s='+word+'&limit=20&type=1&offset='+config.offset,
			success: e => { //要是有箭头函数 (e)=>{}，不要使用function(e){ ... }
				console.log('获取的数据：',e)
				let songCount=e.data.result.songCount //搜索的歌曲数量
				config.songCount=songCount
				let a = e.data.result.songs
				let songs = [];
				config.offset+=a.length
				let change={songCount, word, inputValue:''} //仅仅记录有变化的数据
				let size=(this.data.songs||[]).length
				for (let i = 0; i < a.length; ++i) {
					let s = a[i]; //数组中的一首歌曲
					change['songs['+(size+i)+']']={
						id: s.id, //歌曲的id
						name: s.name, //歌曲的名字
						duration: s.duration, //歌曲时长(ms)
						album: s.album.name, //专辑名称
						length: this.formatDuration(s.duration) //分:秒 格式的时长
					}
				}
				this.setData(change) //设置页面数据
			}
		})
	},
	pause(e){//暂停/播放歌曲
		console.log('pause....')
		if(this.data.paused){
			ac.play()
		}else{
			ac.pause()
		}
		this.setData({paused: !this.data.paused})
	},
  doPlay(index){ //index-就是要播放歌曲的索引号
    seek=false
		let songs=this.data.songs
		let song=songs[index] //点击的歌曲对象
		let change={} //记录有修改的值
		if(lastIndex!=undefined)change["songs["+lastIndex+"].selected"]=false //取消原来的选择状态
		change["songs["+index+"].selected"]=true //设置刚点击项目的选择状态
		lastIndex=index //重新设置最后点击的索引号
		// song.selected=true //不能直接修改数据，必须通过this.setData()来完成
		let id=song.id //歌曲的id
		let mp3='https://music.163.com/song/media/outer/url?id='+id+'.mp3'
		ac.src=mp3 //设置歌曲地址
		ac.title=song.name
		ac.epname=song.album
		//ac.startTime=180
		ac.play() //播放歌曲
		change['paused']=false 
		this.setData(change)
    let q=wx.createSelectorQuery() //获取查询选择器对象
    q.select('#s'+index).fields({size: true, rect:true})
      .selectViewport().fields({size: true, scrollOffset:true})
    .exec(r=>{
      let s=r[0],v=r[1],scrollTop
      console.log(s.top,s.bottom,v.height,v.scrollTop)
      if(s.top<0){
        scrollTop=v.scrollTop+s.top
      }else if(s.bottom>(v.height-10)){
        scrollTop=v.scrollTop+s.bottom-(v.height-10)
      }else{
        return
      }
      wx.pageScrollTo({scrollTop})
    })
	},
	play(e){//点击歌曲时进行播放
		
		let index=e.currentTarget.dataset.songIndex //点击歌曲的索引号
		this.doPlay(index)
		// let index=e.currentTarget.dataset.songIndex //点击歌曲的索引号
	},
	formatDuration(ms){ //格式化时长为 分:秒 的格式
		let second=parseInt(ms/1000) //128秒  ===  2:08  2:18
		let minute=parseInt(second/60) //分
		second=second%60 //秒
		return minute+":"+(second<10?'0':'')+second
	},
	onLoad(options) {
		let next=e=>{
			let nextIndex=lastIndex+1
			if(nextIndex>= this.data.songs.length)nextIndex=0
			this.doPlay(nextIndex)
		}
		ac.onEnded(next)
    ac.onError(next)
    ac.onCanplay(e=>{
      if(seek)return
      seek=true
      setTimeout(()=>{
        console.log("onCanplay",ac.duration)
        ac.seek(ac.duration-10)
      },500)
      })
      let word=wx.getStorageSync('word')
      console.log(888,word)
      this.request(word)
	},
	
})